<?php

defined('WEKIT_VERSION') || exit('Forbidden');

/**
 * 版块基础服务
 *
 * @author Jianmin Chen <sky_hold@163.com>
 * @copyright ©2003-2103 phpwind.com
 * @license http://www.phpwind.com
 *
 * @version $Id: PwThreadIndex.php 17055 2012-08-30 11:02:11Z jieyin $
 */
class PwThreadIndex
{
    /**
     * 统计所有帖子数.
     *
     * @return int
     */
    public function count()
    {
        return $this->_getDao()->count();
    }

    /**
     * 统计所有在版块序列中的帖子数.
     *
     * @param array $fids 版块id序列
     *
     * @return int
     */
    public function countThreadInFids($fids)
    {
        if (empty($fids) || !is_array($fids)) {
            return 0;
        }

        return $this->_getDao()->countThreadInFids($fids);
    }

    /**
     * 统计所有不在版块序列中的帖子数.
     *
     * @param array $fids 版块id序列
     *
     * @return int
     */
    public function countThreadNotInFids($fids)
    {
        if (empty($fids) || !is_array($fids)) {
            return $this->count();
        }

        return $this->_getDao()->countThreadNotInFids($fids);
    }

    /**
     * 获取帖子.
     *
     * @param int    $limit
     * @param int    $offset
     * @param string $order  排序方式
     *
     * @return array
     */
    public function fetch($limit, $offset, $order = 'lastpost')
    {
        $result = $this->_getDao()->fetch($limit, $offset, $order);

        return array_keys($result);
    }

    /**
     * 获取在版块序列中的帖子.
     *
     * @param array  $fids   版块id序列
     * @param int    $limit
     * @param int    $offset
     * @param string $order  排序方式
     *
     * @return array
     */
    public function fetchInFid($fids, $limit, $offset, $order = 'lastpost')
    {
        if (empty($fids) || !is_array($fids)) {
            return array();
        }
        $result = $this->_getDao()->fetchInFid($fids, $limit, $offset, $order);

        return array_keys($result);
    }

    /**
     * 获取不在版块序列中的帖子.
     *
     * @param array  $fids   版块id序列
     * @param int    $limit
     * @param int    $offset
     * @param string $order  排序方式
     *
     * @return array
     */
    public function fetchNotInFid($fids, $limit, $offset, $order = 'lastpost')
    {
        if (empty($fids) || !is_array($fids)) {
            return $this->fetch($limit, $offset, $order);
        }
        $result = $this->_getDao()->fetchNotInFid($fids, $limit, $offset, $order);

        return array_keys($result);
    }

    /**
     * 删除多条数据.
     *
     * @param int $limit
     *
     * @return bool
     */
    public function deleteOver($limit)
    {
        if ($limit < 1) {
            return false;
        }

        return $this->_getDao()->deleteOver($limit);
    }

    protected function _getDao()
    {
        return Wekit::loadDao('forum.dao.PwThreadsIndexDao');
    }
}
